package com.example.a_java.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.a_java.dto.LoanTrackDTO;
import com.example.a_java.dto.LoanTrackQuery;
import com.example.a_java.entity.LoanTrack;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.time.LocalDate;
import java.util.Map;

/**
 * 贷后跟踪服务接口
 */
public interface LoanTrackService {
    
    /**
     * 分页查询贷后跟踪列表
     * 
     * @param query 查询条件
     * @return 分页结果
     */
    Page<LoanTrack> getTrackList(LoanTrackQuery query);
    
    /**
     * 获取贷后跟踪详情
     * 
     * @param id 跟踪ID
     * @return 跟踪详情
     */
    LoanTrack getTrackDetail(Long id);
    
    /**
     * 新增贷后跟踪记录
     * 
     * @param dto 跟踪信息
     * @return 跟踪ID
     */
    Long addTrack(LoanTrackDTO dto);
    
    /**
     * 更新贷后跟踪记录
     * 
     * @param dto 跟踪信息
     * @return 处理结果
     */
    boolean updateTrack(LoanTrackDTO dto);
    
    /**
     * 上传跟踪附件
     * 
     * @param file 附件文件
     * @param trackId 跟踪ID
     * @param type 附件类型
     * @return 附件信息
     */
    Map<String, Object> uploadAttachment(MultipartFile file, Long trackId, String type) throws IOException;
    
    /**
     * 获取附件信息
     * 
     * @param id 附件ID
     * @return 附件信息
     */
    Map<String, Object> getAttachment(Long id);
    
    /**
     * 删除附件
     * 
     * @param id 附件ID
     * @return 处理结果
     */
    boolean deleteAttachment(Long id);
    
    /**
     * 删除贷后跟踪记录
     * 
     * @param id 跟踪ID
     * @return 处理结果
     */
    boolean deleteTrack(Long id);
} 
